//
//  HMHomeTableViewController.swift
//  WeiBo
//
//  Created by Apple on 16/9/18.
//  Copyright © 2016年 KY. All rights reserved.
//

import UIKit
import YYModel

//  重用标记
private let HMHomeTableViewCellIdentifier = "HMHomeTableViewCellIdentifier"
class HMHomeTableViewController: HMVisitorTableViewController {

//    var statusList: [HMStatus]?
    //  需要使用的ViewModel
    fileprivate lazy var statusListViewModel: HMStatusListViewModel = HMStatusListViewModel()
    
    //  上拉加载
    fileprivate lazy var pullupView: UIActivityIndicatorView = {
        let view = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)
        view.color = UIColor.red
        return view
    
    }()
    
    //  下拉刷新
//    fileprivate lazy var pulldownView: UIRefreshControl = {
//        let ctr = UIRefreshControl()
//        ctr.addTarget(self, action: #selector(pulldownRefresh), for: .valueChanged)
//        return ctr
//    }()

    fileprivate lazy var pulldownView: CZRefreshControl = {
        let ctr = CZRefreshControl()
        ctr.addTarget(self, action: #selector(pulldownRefresh), for: .valueChanged)
        return ctr
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if isLogin {
            setupTableView()
            loadData()
        } else {
            //  未登录
            visitorView?.updateVisitorInfo(message: nil, imageName: nil)
        }
        
    }
    
    
    private func setupTableView() {
    
        //  注册cell
        tableView.register(HMHomeTableViewCell.self, forCellReuseIdentifier: HMHomeTableViewCellIdentifier)
        //  设置自动计算行高
        tableView.rowHeight = UITableViewAutomaticDimension
        //  设置预估行高
        tableView.estimatedRowHeight = 200
        //  去掉分割线
        tableView.separatorStyle = .none
        
        //  设置底部视图
        tableView.tableFooterView = pullupView
        //  设置下拉刷新
//        tableView.refreshControl = pulldownView
//        tableView.addSubview(pulldownView)
//        self.refreshControl = pulldownView
        
        tableView.addSubview(pulldownView)
        
        pullupView.sizeToFit()
       
    }
    
    
    //  下拉刷新方法
    @objc private func pulldownRefresh() {
    
        loadData()
        
        
        
    }
    
    private func endRefreshing() {
        //  停止刷新
        pullupView.stopAnimating()
        pulldownView.endRefreshing()
    }
    
    //  加载数据
    fileprivate func loadData() {
        //  根据pullupView.isAnimating判断是上拉加载
        statusListViewModel.loadData(isPullup: pullupView.isAnimating) { (isSuccess) in
            //  结束刷新
            self.endRefreshing()
            if isSuccess {
                self.tableView.reloadData()
            }
        }
        
    
//        let accessToken = HMUserAccountViewModel.sharedUserAccountViewModel.accessToken!
//        HMNetworkTools.sharedTools.requestStatuses(accessToken: accessToken) { (response, error) in
//            
//            if error != nil {
//                print("网络请求异常: \(error)")
//                return
//            }
//            
//            //  代码执行到此，网络请求成功
//            guard let dic = response as? [String: Any] else {
//                print("不是一个正确的字典")
//                return
//            }
//            
//            guard let dicArray = dic["statuses"] as? [[String: Any]] else {
//                print("不是一个正确的字典")
//                return
//            }
//            
//            guard let modelArray = NSArray.yy_modelArray(with: HMStatus.self, json: dicArray) as? [HMStatus] else {
//                print("数据解析异常")
//                return
//            }
//            
//            //  代码执行到此 字典没有问题
////            var tempArray = [HMStatus]()
////            for value in dicArray {
////                
//////                let status = HMStatus(dic: value)
//////                tempArray.append(status)
////                
////                
////            }
//            //  保存数据
//            self.statusList = modelArray
//            //  重新刷新数据
//            self.tableView.reloadData()
//        }
    
    
    }
    
    
    
    
    
    
    
    
    
    
}

// MARK:    -- UITableViewDataSource 
extension HMHomeTableViewController {
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusListViewModel.statusList.count
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: HMHomeTableViewCellIdentifier, for: indexPath) as! HMHomeTableViewCell
        cell.statusViewModel = statusListViewModel.statusList[indexPath.row]
        
        //  选中颜色
        cell.selectionStyle = .none
        
        return cell
    }
    
    //  将要显示cell的时候
    override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        if indexPath.row == statusListViewModel.statusList.count - 1 && !pullupView.isAnimating{
            print("已经是最后一个cell了")
            pullupView.startAnimating()
            
            
            //  开始请求更多的微博数据
            loadData()
        }
        
    }
}


























